import axios from "axios";

const authAPI = [
  "/api/private/v1/menus",
  "/api/private/v1/users",
  "/api/private/v1/roles",
  "/api/private/v1/rights",
  "/api/private/v1/roles",
  "/api/private/v1/goods",
  "/api/private/v1/categories",
  "/api/private/v1/orders",
  "/api/private/v1/reports",
];

// 添加请求拦截器：默认所有请求在发送之前，都会先经过请求拦截器的拦截，我们可以给请求添加一些通用的配置。
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // config.url!.includes config.url?.includes:?和！也表示断言的意思，表示url属性一定存在值。不可能为undefined。
    if (authAPI.some((api) => config.url.includes(api))) {
      const userInfo = localStorage.getItem("userinfo");
      if (userInfo) {
        const result = JSON.parse(userInfo);
        config.headers["Authorization"] = result.token;
      }
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

export default function request(url, method, body) {
  return new Promise((resolve, reject) => {
    axios({ url, method: method ? method : "GET", data: body })
      .then(({ data }) => {
        resolve(data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}
